#ifndef ABSTRACTTARGETADAPTER_G
#define ABSTRACTTARGETADAPTER_G

#include <QFile>
#include "fileutils.h"
#include "fileinfo.h"
#include "XDeltaWrapper.h"

class AbstractTargetAdapter
{
public:
    virtual QHash<QString, FileInfo> createFileTable(bool calculateHashes) = 0;
    virtual QHash<QString, FileInfo> loadFileTable(bool oldTable) = 0;
    virtual QDirIterator *getFilesInSource() = 0;
    virtual QString getSourcePath() = 0;
    virtual QString getTargetPath() = 0;
    virtual quint64 getDirSize(QHash<QString, FileInfo> table) = 0;
    virtual quint64 getDirSize(QDirIterator *it) = 0;
    virtual void backupFile(QString fileName) = 0;
    virtual void restoreFile(QString fileName) = 0;
    virtual void createDiff(QString fileName) = 0;
    virtual void restoreDiff(QString fileName) = 0;
    virtual void finalize() = 0;
};

#endif // ABSTRACTTARGETADAPTER_G
